package com.hbase;

import com.until.HBUtils;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;

import java.io.IOException;

/**
 * @Author：YuanHaHa
 * @Date：2024/7/5 22:02
 */
public class CreateTable {
    public static void main(String[] args) throws IOException {
        // 1.获取 Hbase 连接对象
        Connection connection = HBUtils.getConnection();
        // 2.获取 HBaseAdmin 对象用于管理和访问表
        Admin admin = connection.getAdmin();
        // 3.判断 要创建的表是否存在 (新API)
        boolean isExist = admin.tableExists(TableName.valueOf("Person"));
        //3.如果表不存在 则创建表
        if(!isExist){
            // 3.1 创建表属性对象 直接传入 String 类型的 table name 的方法已经过时
            HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("Person"));
            // 3.2 创建多个列族
            // 1.创建列族名数组
            String[] columnFamily = new String[]{"info01" , "info02"};
            // 2.向表属性对象中添加列族
            for (String cf : columnFamily) {
                // 1.创建列描述对象
                HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
                // 2.将列描述对象添加到表属性描述对象中
                descriptor.addFamily(hColumnDescriptor);
            }
            // 4.根据对表的配置创建表
            admin.createTable(descriptor);
            System.out.println("表 Person 创建成功");

        }
        // 释放链接
        HBUtils.release(connection, admin);
    }
}
